package com.itheima52.mobilesafe.receiver;

import com.itheima52.mobilesafe.R;
import com.itheima52.mobilesafe.service.LocationService;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.AvoidXfermode.Mode;
import android.media.MediaPlayer;
import android.telephony.SmsMessage;

/**
 * 短信拦截
 * 
 * @author ludaxu
 * 
 */
public class SmsReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		// 接收到的短信的信息
		Object[] objects = (Object[]) intent.getExtras().get("pdus");
		for (Object object : objects) {// 短信最多140字节,一条短信内容太多,会分为多条短信发送会,所以是数组,一般只会执行一次
			// 拿到一条短信
			SmsMessage message = SmsMessage.createFromPdu((byte[]) object);
			String originatingAddress = message.getOriginatingAddress();// 拿到短信的来源号码.
			String messageBody = message.getMessageBody();// 拿到短信的内容
			System.out.println(originatingAddress + ":" + messageBody);
			if ("#*alarm*#".equals(messageBody)) {
				// 播放报警音乐,手机调为静音,也可播放音乐,因为使用的是媒体声音的通道,和铃声无关
				MediaPlayer player = MediaPlayer.create(context, R.raw.alarm);
				player.setVolume(1f, 1f);// 左右声道都调为最大
				player.setLooping(true);
				player.start();

				abortBroadcast();// 中断短信的传递,系统的短信app就无法收到短信

			} else if ("#*location*#".equals(messageBody)) {
				// 获取经纬度
				Intent service = new Intent(context, LocationService.class);
				// 开启定位服务
				context.startService(service);

				SharedPreferences sp = context.getSharedPreferences("config",
						context.MODE_PRIVATE);

				String location = sp.getString("location", "");
				System.out.println("location:" + location);
				abortBroadcast();// 中断短信的传递,系统的短信app就无法收到短信

			} else if ("#*wipedata*#".equals(messageBody)) {

				abortBroadcast();// 中断短信的传递,系统的短信app就无法收到短信

			} else if ("#*lockscreen*#".equals(messageBody)) {

				abortBroadcast();// 中断短信的传递,系统的短信app就无法收到短信
			}

		}
	}
}
